package com.fulihui.common.util;

import org.apache.commons.codec.binary.Base64;
import org.apache.commons.lang3.StringUtils;

import java.io.UnsupportedEncodingException;

/**
 * Base64Util工具类
 *
 * @author wang_wx
 * @date 2018-07-24
 */
public class Base64Utils {

    /**
     * 默认编码
     */
    private static final String DEFAULT_CHARSET_NAME = "utf-8";

    /**
     * 编码-utf-8格式
     *
     * @param src 待编码字符串
     * @return 编码后的字符串
     */
    public static String encode(String src) {
        return encode(src, DEFAULT_CHARSET_NAME);
    }

    /**
     * 编码
     *
     * @param src         待编码字符串
     * @param charsetName 编码格式
     * @return 编码后的字符串
     */
    public static String encode(String src, String charsetName) {
        if (StringUtils.isBlank(charsetName)) {
            charsetName = DEFAULT_CHARSET_NAME;
        }
        byte[] bytes = Base64.encodeBase64(src.getBytes());
        String result = null;
        try {
            result = new String(bytes, charsetName);
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        return result;
    }

    /**
     * 解码-utf-8格式
     *
     * @param src 待解码字符串
     * @return 解码后的字符串
     */
    public static String decode(String src) {
        return decode(src, DEFAULT_CHARSET_NAME);
    }

    /**
     * 解码
     *
     * @param src         待解码字符串
     * @param charsetName 解码格式
     * @return 解码后的字符串
     */
    public static String decode(String src, String charsetName) {
        if (StringUtils.isBlank(charsetName)) {
            charsetName = DEFAULT_CHARSET_NAME;
        }
        byte[] bytes = Base64.decodeBase64(src.getBytes());
        String name = null;
        try {
            name = new String(bytes, charsetName);
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        return name;
    }

}
